Various types of communications systems exist which allow two systems or two individuals to communicate with one another over the communications system. Examples of such communications systems include automatic call distributors (ACDs), web servers, local area networks (LANs), public switched telephone networks (PSTNs), or combinations of these.
One problem with these communications systems is that the systems are typically capable of establishing a limited number of connections. As a result, when a user attempts to access the communications system, the user often is unable to establish a connection when the system has already reached its limit of available connections. The user may get an error message stating that a connection could not be established, or may not get any message at all. Since the user has no way of knowing when a connection can be established, the user must repeatedly attempt to access the server until a connection is made. During each attempt, the user has an equal chance of establishing a connection as another user that is making a first attempt.
In the case of a file server, for example over a LAN, when a PC user attempts to establish a connection with the file server, a connection will be made only if the limited number of active connections is not exhausted. When all the available connections are granted, any new connection attempt will be denied until a current user releases their connection. When the system is in this state, a user attempting to gain access to the file server has to manually retry establishing a connection while taking the risk that another user will gain access ahead of them. As result, assuming each user makes the same number of attempts, the selection of the user is entirely random. Similarly, in the case of a licensed program having a limited number of simultaneous users installed on a server, only a limited number of users can gain access to the licensed program at any one time. Once the number of users gaining access to the program reaches the maximum allowed, no other users are allowed access. Again, the user attempting to gain access to the server has to manually retry establishing a connection. In the case of a web server, when a user attempts to access a certain web page, the user will either be allowed access to the web page, or will receive an error message from the users web browser. If access is denied, to user has no way of knowing when and if access will be allowed.
Queuing is widely used on products such as ACDs where it is necessary to prioritize and manage callers and the availability of agents. Since there are usually more callers than agents, callers must wait, or queue for an agent. While the caller is in the queue, the caller is continuously connected to the ACD while waiting for an available agent.